#Bank_withdrawal_System
'''
说明1：学习第一周作业
说明2：参考1.09的综合案例中的学生信息管理，来实现一个自动取款机的存取款模拟效果。
说明3：要求有登陆和退出、查询余额、取钱，存钱等操作。
日期：2019-04-01
作者：python全栈15期班 张金慧

'''

#初始化一个变量，存储3个以上账号信息，之后的操作都是对这个变量的处理。
bank_account = [
{'name':'zhangsan','balance':'1000','password':'111111'},
{'name':'lisi','balance':'2000','password':'222222'},
{'name':'wangwu','balance':'3000','password':'333333'},
{'name':'zhaoliu','balance':'4000','password':'444444'},
{'name':'qianwu','balance':'5000','password':'555555'},]

#定义系统登录函数
def AccountLogin(account,name,password):
	'''
	系统登录函数
	变量1：账户表
	变量2：账户名
	变量3：密码
	'''
#循环取值

	for i in range(len(account)):
		if(account[i]["name"] == name and account[i]["password"] == password):
			print("="*6,"登录成功！","="*6)
			print("|{0:8}|{1:8}".format("1.查看","2.存款"))
			print("|{0:8}|{1:8}".format("3.取款","4.退出"))
			print("-"*24)
			DoAccount()
			return
		else:
			print("账户或密码错误！")
			return
			
#操作函数
def DoAccount():
	while True:
		#接收键盘输入值
		key = input("请输入操作序号：")
		if key == "1":
			print("="*9,"查看","="*9)
			ViewAccount(bank_account,accname,accpwd)
		elif key == "2":
			print("="*9,"存款","="*9)
			#存款
			num = input("请输入存款金额：")
			UpdateAccount(bank_account,accname,accpwd,"in",int(num))
		elif key == "3":
			print("="*9,"取款","="*9)
			#取款
			num = input("请输入取款金额：")
			UpdateAccount(bank_account,accname,accpwd,"out",int(num))
		elif key == "4":
			print("="*7,"谢谢使用！","="*7)
			#退出
			break
		else:
			print("="*7,"无效的输入","="*7)#定义账户查看函数

#定义查看函数
def ViewAccount(account,name,password):
	'''
	账户查看函数
	'''
#循环取值
	for i in range(len(account)):
		if(account[i]["name"] == name and account[i]["password"] == password):
			#输出表头
			print("|{0:12}|{1:6}".format("name","balance"))
			#输出账户信息
			print("|{0:12}|{1:6}".format(account[i]["name"],account[i]["balance"]))

#定义账户修改函数
def UpdateAccount(account,name,password,bank_type,num):
	'''
	账户修改函数
	'''
	for i in range(len(account)):
		if(account[i]["name"] == name and account[i]["password"] == password):
			#如果是存款
			if bank_type =="in":
				account[i]["balance"]=int(account[i]["balance"])+num
				#输出表头
				print("|{0:12}|{1:6}".format("name","balance"))
				#输出账户信息
				print("|{0:12}|{1:6}".format(account[i]["name"],account[i]["balance"]))
			elif bank_type =="out":
				if int(account[i]["balance"])<num:
					print("余额不足！")
					return
				else:
					account[i]["balance"]=int(account[i]["balance"])-num
					#输出表头
					print("|{0:12}|{1:6}".format("name","balance"))
					#输出账户信息
					print("|{0:12}|{1:6}".format(account[i]["name"],account[i]["balance"]))
					return
			else:
				print("参数不正确！")
				return

#初始化页面信息
print("="*2,"自动取款机存取款系统","="*2)
print("请先登录!")
#输入账户密码
accname = input("请输入账号名称：")
accpwd = input("请输入账号密码：")
#调用登录函数
AccountLogin(bank_account,accname,accpwd)






